home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.bsf.engines.jpython;
-
- import com.ibm.bsf.BSFDeclaredBean;
- import com.ibm.bsf.BSFException;
- import com.ibm.bsf.BSFManager;
- import com.ibm.bsf.util.BSFEngineImpl;
- import com.ibm.bsf.util.BSFFunctions;
- import java.util.Vector;
- import org.python.core.PyException;
- import org.python.core.PyObject;
- import org.python.util.PythonInterpreter;
-
- public class JPythonEngine extends BSFEngineImpl {
- PythonInterpreter interp;
-
- public void initialize(BSFManager var1, String var2, Vector var3) throws BSFException {
- super.initialize(var1, var2, var3);
- this.interp = new PythonInterpreter();
- this.interp.set("bsf", new BSFFunctions(var1, this));
- int var4 = var3.size();
-
- for(int var5 = 0; var5 < var4; ++var5) {
- this.declareBean((BSFDeclaredBean)var3.elementAt(var5));
- }
-
- }
-
- public Object eval(String var1, int var2, int var3, Object var4) throws BSFException {
- try {
- return this.interp.eval(var4.toString());
- } catch (PyException var6) {
- var6.printStackTrace();
- throw new BSFException(BSFException.REASON_EXECUTION_ERROR, "exception from JPython: " + var6, var6);
- }
- }
-
- public void exec(String var1, int var2, int var3, Object var4) throws BSFException {
- try {
- this.interp.exec(var4.toString());
- } catch (PyException var6) {
- var6.printStackTrace();
- throw new BSFException(BSFException.REASON_EXECUTION_ERROR, "exception from JPython: " + var6, var6);
- }
- }
-
- public Object call(Object var1, String var2, Object[] var3) throws BSFException {
- StringBuffer var4 = new StringBuffer(300);
- if (var1 != null) {
- var4.append(var1.toString());
- var4.append(".");
- }
-
- var4.append(var2);
- var4.append("(");
- if (var3 != null) {
- for(int var5 = 0; var5 < var3.length; ++var5) {
- var4.append(var3[var5].toString());
- if (var5 < var3.length - 1) {
- var4.append(",");
- }
- }
- }
-
- var4.append(")");
- String var7 = var4.toString();
-
- try {
- return this.eval("<jpython-call>", 0, 0, var7);
- } catch (BSFException var6) {
- this.exec("<jpython-call>", 0, 0, var7);
- return null;
- }
- }
-
- public void declareBean(BSFDeclaredBean var1) throws BSFException {
- this.interp.set(var1.name, var1.bean);
- }
-
- public void undeclareBean(BSFDeclaredBean var1) throws BSFException {
- this.interp.set(var1.name, (PyObject)null);
- }
- }
-